/**
 * 
 */
package fbv.distribuidora.pedido.negocio;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import fbv.commun.dataTools.negocio.EntidadePardraoImpl;
import fbv.commun.excecoes.FBVError;
import fbv.commun.excecoes.FBVException;
import fbv.commun.excecoes.FBVObijetoInvalidoException;
import fbv.commun.util.DTRConstantes;
import fbv.commun.util.DTRMensagens;
import fbv.commun.util.Util;
import fbv.distribuidora.cliente.servico.Cliente;
import fbv.distribuidora.pedido.servico.Pedido;

/**
 * @author Lenildo
 *
 */
public class PedidoImpl extends EntidadePardraoImpl implements Pedido {

	private Cliente cliente;
	private Date dataPedido;
	private ArrayList itens;
	
	/**
	 * 
	 * 
	 */
	public PedidoImpl() {
		
	}	
	
	/* (non-Javadoc)
	 * @see fbv.commun.dataTools.negocio.EntidadePardraoImpl#validarDadosEntidade()
	 */
	@Override
	protected void validarDadosEntidade() throws FBVException {
		List erros = new ArrayList();
		List camposObrigatorios = new ArrayList();
		
		if (cliente == null) {
			camposObrigatorios.add(Pedido.CAMPO_ROTULO_CLIENTE);
		}
		
		if (Util.isCampoVazio(itens)) {
			camposObrigatorios.add(Pedido.CAMPO_ROTULO_ITENS);
		}
		
		if (Util.isCampoVazio(dataPedido)) {
			camposObrigatorios.add(Pedido.CAMPO_ROTULO_DATA_PEDIDO);
		} else if (dataPedido.after(Calendar.getInstance().getTime())) {
			erros.add(new FBVError(DTRConstantes.BUNDLE, DTRMensagens.MSG003, Util.converterDateEmString(Calendar.getInstance().getTime())));
		}
		
		if (Util.isCampoPreenchido(camposObrigatorios)) {
			erros.add(new FBVError(DTRConstantes.BUNDLE, DTRMensagens.MSG002, Util.converterCollectionEmString(", ", camposObrigatorios)));
		}
		
		if (Util.isCampoPreenchido(erros)) {
			throw new FBVObijetoInvalidoException(erros);
		}
	}
	
	
	public Cliente getCliente() {
		return this.cliente;
	}

	public Date getDataPedido() {
		return this.dataPedido;
	}

	public ArrayList getItens() {
		return this.itens;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public void setItens(ArrayList itens) {
		this.itens = itens;
	}


	public void setDataPedido(Date dataPedido) {
		this.dataPedido = dataPedido;		
	}
}
